The present invention relates generally to software-defined or software-programmable TDD (time division duplex) communication systems. The invention relates more particularly to a technique and structure for dynamically sharing RAM (random access memory) by categorizing program code and/or data code copied from a flash memory according to when each category of the program code is to be copied from the flash memory into the RAM and also according to how available RAM space is to be shared with other categories of code copied from the flash memory. The term TDD (time division duplex) refers to communication systems in which the forward direction (i.e., transmission) communication links are separated in time from reverse direction (i.e., receive) communication links by allocating different time slots for transmission links and receiving links in the same frequency band. A software-defined communication system is one wherein components and functions are implemented by means of software in a programmable device such as a DSP (digital signal processor) or a FPGA (field programmable gate array). A software-defined communication system may be either a wireless communication system such as a SDR (software-defined radio) system or a wired communication system such as a software-defined power line communication system.
FIG. 1 shows a basic software-defined communication system that includes a DSP 2 coupled by a bidirectional digital bus 3 to analog-to-digital and digital-to-analog conversion circuitry 4. Conversion circuitry 4 is coupled by a bidirectional digital bus 5 to conventional RF front end circuitry 6 which also is connected to an RF antenna 7. Substantial amounts of signal processing often are handed over to a general-purpose processor (not shown) rather than being performed in special-purpose hardware. The purpose of the basic software-defined communication system typically is to generate both transmitter baseband signals and to process received baseband signals by means of the DSP 2. A software-defined implementation provides a high degree of flexibility in configuring and modifying a communication system. Widely different radio protocols, which sometimes are referred to as “waveforms”, can be fit into a single platform (e.g., a particular set of integrated circuit chips) by utilizing different software in the platform.
A software-defined communication system typically includes different kinds of memories, including RAM (random access memory), flash memory, and ROM (read only memory). RAM is the most expensive kind of memory and has the fastest writing and reading access speeds. Flash memory is less expensive, but has much slower access speeds. ROM is the least expensive kind of memory and has fast read access speeds comparable to those of RAM, but new data cannot be written into a ROM. Constant value code and program code can be stored in a flash memory and can be directly accessed from the RAM by a DSP or other processor, but this technique reduces the amount of expensive RAM that is required. Alternatively, constant value code and program code can be initially stored in the flash memory, then copied into the RAM, and then accessed directly by the DSP or other processor. This technique provides higher operating speed but is more costly because a larger amount of expensive RAM is required.
Note that the terminology “MIPS” means 1 million instructions per second, and is used to indicate the computational speed requirement for a particular part of program code and the computational power of a suitable DSP. In order to reduce the cost of a software-defined communication system, it is common practice to select a DSP that just fits the application without allowing very much “headroom” for computational capability. In conventional dynamic sharing of RAM (e.g., as explained in the cited Wikipedia reference at the website http://en.wikipedia.org/wiki/C_dynamic_memory_allocation), the programming code and constant value code are all copied from flash memory into RAM before the programming code and constant value code are executed.
In a software-defined TDD communication system, the TX state machine 13 and the RX state machine never run simultaneously. A data memory section shares various categories of RAM among different states of a state machine, but the program code does not “overlap” in the RAM in the sense that particular sections of RAM are used to store different sections of program code for different successive states of the state machine, due to the “overhead” of dynamic RAM sharing for the program code section. To achieve dynamic RAM sharing, the program section needs to be copied from flash memory to RAM before executing the code of the program section. Such copying requires a substantial additional amount of time. In the prior art the program code is all copied at once prior to executing any of it. However, ordinarily some of the program code needs to be executed at very high speed, i.e. at a very high MIPS rate. This does not allow the program code to be copied all at one time from the flash memory into the RAM. Consequently, present software-defined TDD communication systems do not use dynamic RAM sharing techniques. Instead, static RAM allocation is used.
It should be appreciated that operation of a software-defined TDD communication system is very “timing-intensive”. This makes it necessary to execute the program associated with the state machine 10 of FIG. 2 in RAM because RAM read and write operations both are much faster than those of any flash memory. As mentioned earlier, it has been necessary to copy the software program from flash into RAM in prior software-defined TDD communication systems in the state-by-state operation of a complex state machine (for example a state machine of the kind shown in subsequently described FIG. 2). This is because the amount of time that would be needed for the large number of required flash memory accessing operations would be prohibitive. Consequently, the prior art systems require all of the program code to be copied from the flash memory to the RAM at the very beginning of system operation and this has required use of a large amount of costly RAM. Unfortunately, the use of conventional dynamic sharing of RAM in a software-defined communication system is unacceptably expensive due to the relatively high cost of RAM compared to flash memory.
Use of multiple modulation equipment including multiple types of modulation in wireless networks is disclosed in commonly assigned Patent Application Publication No. US 2013/0201965, entitled “Wireless Networks Utilizing Multiple Modulations” published Aug. 8, 2013, by Schmidl et al.
Thus, there is an unmet need for a software-defined TDD or FDD (frequency division duplex) communication system and method which is less expensive than the prior art.
There also is an unmet need for a software-defined TDD or FDD communication system and method which is less expensive than the prior art without substantially sacrificing speed performance.
There also is an unmet need for a software-defined multi-modulation TDD or FDD communication system and method which is less expensive than the prior art without substantially sacrificing speed performance.
There also is an unmet need for a software-defined multi-modulation TDD or FDD communication system and method which requires substantially less RAM than the prior art, without substantially sacrificing speed performance.
There also is an unmet need for an improved and cost-effective way of achieving dynamic RAM sharing allocation in a software-defined TDD or FDD communication system without substantially sacrificing speed performance.